﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Modelo_ETdA.Dados;
using Modelo_ETdA.Negocio.Analista;
using Modelo_ETdA.Negocio.AmbienteComercial;

namespace Modelo_ETdA.Interface
{
    public partial class MenuAnalista : Form
    {
        private Login ecraLogin;
        private Analista analist;
        private Form proximoMenu;
        private GestorAnalista gestorAna;

        public MenuAnalista(Login login, Analista an, GestorAnalista gestor)
        {
            InitializeComponent();
            ecraLogin = login;
            analist = an;
            inicializaJanela();
            gestorAna = gestor;
            listaAmbientes.DataSource = gestor.getDadosTabela(an.cod);

            listaAmbientes.Columns[0].Width -= 20;
            listaAmbientes.Columns[1].Width += 92;
            listaAmbientes.Columns[2].Width += 20;
            listaAmbientes.Columns[3].Width += 20;
            listaAmbientes.Columns[0].HeaderText = "Código";
            listaAmbientes.Columns[1].HeaderText = "Ambiente Comercial";
            listaAmbientes.Columns[2].HeaderText = "Data de Registo";
            listaAmbientes.Columns[3].HeaderText = "Ultima Edição";

        }

        private void logout_Click(object sender, EventArgs e)
        {
            ecraLogin.logout();
            ecraLogin.Visible = true;
            this.Visible = false;
        }

        public void logOut()
        {
            ecraLogin.Visible = true;
            this.Visible = false;
        }

        private void inicializaJanela()
        {
            nomeAnalista.Text = analist.primeiro_nome + " " + analist.ultimo_nome;
            bi.Text = analist.bi;

            numAmbientes.Text = "" + analist.listCodAmbC.Count;
        }

        private void registarAmbComercial_Click(object sender, EventArgs e)
        {
            try
            {
            proximoMenu = new RegistarAmbComercial(this, new GestorAmbienteComercial(analist.username), gestorAna);
            proximoMenu.Visible = true;
            this.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível registar um novo ambiente comercial.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void MenuAnalista_FormClosed(object sender, FormClosedEventArgs e)
        {
            sair();
        }

        public void sair()
        {
            ecraLogin.sair();
        }

        private void editarDados_Click(object sender, EventArgs e)
        {
            try{
            EditarDados edit = new EditarDados(this, gestorAna);
            edit.Visible = true;
            this.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível editar dados.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void consultar_Click(object sender, EventArgs e)
        {
            try
            {
                if (listaAmbientes.SelectedRows.Count > 0)
                {
                    int codAmbCom = (int)listaAmbientes[0, listaAmbientes.SelectedRows[0].Index].Value;
                    GestorAmbienteComercial gestor = new GestorAmbienteComercial(gestorAna.getAnalistaLogado().username);
                    MenuAnaliseETdA analise = new MenuAnaliseETdA(this, gestor, gestorAna, codAmbCom);
                    analise.Visible = true;
                    this.Visible = false;
                }
                else
                {
                    MessageBox.Show("Seleccione pelo menos um ambiente comercial para ser consultado.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Seleccione pelo menos um ambiente comercial para ser consultado.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public Analista Analist
        {
            get { return analist; }
            set { analist = value; }
        }

        private void MenuAnalista_VisibleChanged(object sender, EventArgs e)
        {
            if (this.Visible)
                listaAmbientes.DataSource = gestorAna.getDadosTabela(analist.cod);
        }

        private void listaAmbientes_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString().Equals("Return"))
            {
                int codAmbCom = (int)listaAmbientes[0, listaAmbientes.SelectedRows[0].Index].Value;
                GestorAmbienteComercial gestor = new GestorAmbienteComercial(gestorAna.getAnalistaLogado().username);
                MenuAnaliseETdA analise = new MenuAnaliseETdA(this, gestor, gestorAna, codAmbCom);
                analise.Visible = true;
                this.Visible = false;
            }

            if (e.KeyCode == Keys.Back)
            {
                logOut();
            }
        }


    }
}
